package com.yty.demo._11_reflection;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * @author: yangtaoyao
 * @time: 2020/1/15 14:00
 * @description: 动态代理test
 */
public class Test2 {
    public static void main(String[] args) {
        /**
         * 如果一个对象想要通过Proxy.newProxyInstance方法被代理，
         * 必须要有相应的接口
         */
        ITestDemo testDemo=new TestDemoImpl();
        testDemo.test1();
        testDemo.test2();
        testDemo.test3();

        /**
         * 在执行方法时需要加入一些东西
         */
        InvocationHandler handler=new ProxyDemo(testDemo);
        //Object newProxyInstance(classLoader,interfaces,Handler)
        ITestDemo t= (ITestDemo) Proxy.newProxyInstance(handler.getClass().getClassLoader(),
                testDemo.getClass().getInterfaces(),handler);
        t.test1();
        t.test2();
        t.test3();
    }
}
